#ifndef DEFECTDLG_H
#define DEFECTDLG_H
#include <QTableWidget>
#include <QWidget>

#include <Message/message.h>

#include <SqliteUtil/sqliteutil.h>

namespace Ui {
class DefectDlg;
}

class DefectDlg : public QWidget
{
    Q_OBJECT
public:
    explicit DefectDlg(QWidget *parent = nullptr);
    ~DefectDlg();


    void iniPage(int state);
    void iniPlanPage(const int &scheme_id);

    void upPageData(int id);
    void initTableWidget(QTableWidget *table);

    void iniTable1();
    void iniTable2();
    void iniTable3();
    void iniTable4();
    void iniTable5();
    void iniTable6();

    void upPageTable1(const QList<DefectSetting>& defectSettings);
    void upPageTable3(const QList<GeneralParam>& generalParam);
    void upPageTable4(const QList<QualityGrade>& qualityGrade);
    void upPageTable5(const QList<EdgeParam>& edgeParam);
    void upPageTable6(const QList<FixedLength>& fixedLength);

    void setWidgetsEnabled(QWidget *parent, bool enabled);

    void iniData();


    // 数据库更新
    void updateDefectScheme(const int& scheme_id);
    void updateDefectSettings(const int& scheme_id);
    void updateGeneralParams(const int& scheme_id);
    void updateQualityGrades(const int& scheme_id);
    void updateEdgeParams(const int& scheme_id);
    void updateFixedLengths(const int& scheme_id);
signals:
    void sigFormInfo();
private slots:
    void on_Bt_Save_clicked();

    void updateDatabase(const int& scheme_id);

    void on_Bt_Updata_clicked();

    void on_Bt_Quite_clicked();

private:
    Ui::DefectDlg *ui;

    SqliteUtil m_sql;
    Message* m_pMsg;
    bool isInitializationComplete = false;
    int m_currentSchemeId = -1;
    int m_nRunState = 0;
};

#endif // DEFECTDLG_H
